1. Field of the Invention
The present invention relates to a wireless communications protocol. More specifically, the present invention discloses a data structure for a layer 2 protocol data unit (PDU).
2. Description of the Prior Art
The surge in public demand for wireless communication devices has placed pressure upon industry to develop increasingly sophisticated communications standards. The 3rd Generation Partnership Project (3GPP(trademark)) is an example of such a new communications protocol. Such standards may utilize a three-layer approach to communications. Please refer to FIG. 1. FIG. 1 is a block diagram of three layers in such a communications protocol. In a typical wireless environment, a first station 10 is in wireless communications with one or more second stations 20. An application 13 on the first station 10 composes a message 11 and has it delivered to the second station 20 by handing the message 11 to a layer 3 interface 12. Besides being used as a transmission and reception interface for the application 13, the layer 3 interface 12 may also generate layer 3 signaling messages 12a for the purpose of controlling layer 3 operations between the first station 10 and the second station 20. An example of such a layer 3 signaling message is a request for ciphering key changes, which are generated by the layer 3 interfaces 12 and 22 of both the first and the second stations, respectively. The layer 3 interface 12 delivers either the message 11 or the layer 3 signaling message 12a to a layer 2 interface 16 in the form of layer 2 service data units (SDUs) 14. The layer 2 SDUs 14 may be of any length, and have an internal format that is dictated by the layer 3 interfaces 12 and 22. The layer 2 interface 16 composes the SDUs 14 into one or more layer 2 protocol data units (PDUs) 18. Each layer 2 PDU 18 is of a fixed length, and has an internal structure that is dictated by the layer 2 interfaces 16 and 26. The layer 2 PDUs 18 are then passed on to a layer 1 interface 19. The layer 1 interface 19 is the physical layer, transmitting data to the second station 20. The transmitted data is received by the layer 1 interface 29 of the second station 20 and reconstructed into one or more PDUs 28, which are passed up to the layer 2 interface 26. The layer 2 interface 26 receives the PDUs 28 and builds up one or more layer 2 SDUs 24. The layer 2 SDUs 24 are passed up to the layer 3 interface 22. The layer 3 interface 22, in turn, converts the layer 2 SDUs 24 back into either a message 21, which should be identical to the original message 11 that was generated by the application 13 on the first station 10, or a layer 3 signaling message 22a, which should be identical to the original signaling message 12a generated by the layer 3 interface 12 and which is then processed by the layer 3 interface 22. The received message 21 is passed to an application 23 on the second station 20.
Generally speaking, each layer in the transmitting first station 10 adds information to carry the message 11 and any appended data from the upper layers. For example, the layer 3 interface 12 packs the application message 11 into one or more layer 2 SDUs 14. Each layer 2 SDU will not only include data from the message 11, but will also include internal information that is required by the layer 3 interfaces 12 and 22. The layer 2 interface 16, in a similar manner, packs the layer 2 SDUs 14 into layer 2 PDUs 18, each of which also has additional information required by the layer 2 interfaces 16 and 26. On the receiving end at the second station 20, each layer removes the added information particular to that layer, and passes the remainder up to the upper layer. Thus, the layer 2 interface 26 unpacks the layer 2 SDUs 24 from the received stream of layer 2 PDUs 28, and passes only the layer 2 SDUs 24 up to the layer 3 interface 22. Similarly, the layer 3 interface 22 unpacks the message 21 from the layer 2 SDUs 24, passing only the complete message data 21 to the application 23. As a note regarding terminology used throughout this disclosure, a PDU is a data unit that is used by a layer internally to transmit and receive information, whereas an SDU is a data unit that is passed up to, or received from, an upper layer. Thus, a layer 3 PDU is exactly the same as a layer 2 SDU. Similarly, a layer 2 PDU could also be termed a layer 1 SDU. For purposes of the following disclosure, the shortened term xe2x80x9cSDUxe2x80x9d is used to indicate layer 2 SDUs (that is, layer 3 PDUs), and the term xe2x80x9cPDUxe2x80x9d should be understood as layer 2 PDUs (i.e., layer 1 SDUs).
Of particular interest are the layer 2 interfaces 12 and 22, which act as buffers between the relatively high-end data transmission and reception requests of the applications 13 and 23, and the low-level requirements of the physical transmission and reception process at the layer 1 interfaces 19 and 29. Please refer to FIG. 2. FIG. 2 is a diagram of a transmission/reception process from a layer 2 perspective. A layer 2 interface 32 of a transmitter 30, which may be either a base station or a mobile unit, receives a string of layer 2 SDUs 34 from a layer 3 interface 33. The layer 2 SDUs 34 are sequentially ordered from 1 to 5, and are of an unequal length. The layer 2 interface 32 packs the string of layer 2 SDUs 34 into a string of layer 2 PDUs 36. The layer 2 PDUs 36 are sequentially ordered from 1 to 4, and are all of an equal length. The string of layer 2 PDUs 36 is then sent off to the layer 1 interface 31 for transmission. A reverse process occurs at the receiver end 40, which may also be either a base station or a mobile unit, with a receiver layer 2 interface 42 unpacking a received string of layer 2 PDUs 46 into a received string of layer 2 SDUs 44. Under certain transport modes, the multi-layered protocol insists that the receiver layer 2 interface 42 present the layer 2 SDUs to the layer 3 interface 43 in order. That is, the layer 2 interface 42 must present the SDUs 44 to the layer 3 interface 43 in the sequential order of the SDUs 44, beginning with SDU 1 and ending with SDU 5. The ordering of the SDUs 44 may not be scrambled, nor may a subsequent SDU be delivered to layer 3 until all of the prior SDUs have been delivered.
In line transmissions, such a requirement is relatively easy to fulfill. In the noisy environment of wireless transmissions, however, the receiver 40, be it a base station or a mobile unit, often misses data. Some layer 2 PDUs in the received string of PDUs 46 will therefore be missing. Thus, ensuring that the layer 2 SDUs 44 are presented in order can pose a significant challenge. Wireless protocols are carefully designed to address such problems. Please refer to FIG. 3 with reference to FIG. 1. FIG. 3 is a simplified block diagram of a layer 2 PDU 50, as defined in the 3GPP(trademark) TS 25.322 specification. In general, there are two types of PDUs: a control PDU or a data PDU. Control PDUs are used by the layer 2 interfaces 16 and 26 to control data transmission and reception protocols. This is somewhat analogous to the exchange of the signaling messages 12a and 22a of the layer 3 interfaces 12 and 22. However, the layer 2 interfaces 16 and 26 do not interpret or recognize the layer 3 signaling messages 12a and 22a, whereas the layer 2 interfaces 16 and 26 do recognize layer 2 control PDUs, and do not hand layer 2 control PDUs up to the layer 3 interfaces 12 and 22. Data PDUs are used to transmit data from the upper layers, i.e., the layer 3 interfaces 12 and 22. Upon reception of data PDUs, the data contained therein is reassembled and presented to the upper layer 3 interface 12 or 22. The example PDU 50 is a data PDU, and is divided into several fields, as defined by the layer 2 protocol.
The first field 51 is a single bit indicating that the PDU 50 is either a data PDU or a control PDU. As the data/control bit 51 is set (i.e., equal to 1), the PDU 50 is marked as a data PDU. The second field 52 is a sequence number field, and is twelve bits long. Successive PDUs 18, 28 have successively higher sequence numbers, and in this way the second station 20 can properly reassembled layer 2 PDUs 28 to form layer 2 SDUs 24. That is, if a first PDU 18 is transmitted with a sequence number equal to 536, a next PDU 18 would be transmitted with a sequence number equal to 537, and so forth. As the sequence number field 52 is 12 bits in length, the sequence number field 52 can hold a maximum value of 4095. After this maximum value of 4095, the sequence numbers in the PDUs 18, 28 rollover back to zero and begin incrementing again. A single polling bit 53 follows the sequence number field 52. The polling bit 53 is set to indicate that the receiver of the PDU 50 (i.e., the second station 20) should respond with an acknowledgment status PDU, which is one kind of control PDU. Acknowledgment status PDUs are used to acknowledge a receiving status of the receiver, i.e., the second station 20, to the transmitter, i.e., the first station 10. An acknowledgment status PDU enables the first station 10 to determine which PDUs 18 have been received by the second station 20, and thus which PDUs 18 may need to be re-transmitted. The first station 10 sets the polling bit 53 to 1 to request the second station 20 to send an acknowledgment status control PDU. Following the polling bit 53 is a single bit 54a that is reserved and is set to zero. The next bit 55a is an extension bit, and when set indicates the presence of a following length indicator (LI). An LI may be either 7 bits long or 15 bits long, and is used to indicate the ending position of a layer 2 SDU within the layer 2 PDU 50. For purposes of the following invention, 15-bit LIs are considered. If a single SDU completely fills an SDU array 58 of the PDU 50, then the bit 55a would be zero, thereby indicating that no LI is present. In the example PDU 50, however, there are two layer 2 SDUs packed and ending in the layer 2 PDU 50: SDU_157a and SDU_257b. There must, therefore, be two LIs to indicate the respective ends of the SDU_57a and the SDU2 57b. A PDU following the PDU 50 would hold the LI for SDU3 57c. The first LI is in field 56a following the extension bit field 55a, and marks the ending position 58a of the SDU1 57a. For this example, if we assume that SDU_1 has a size of 30 octets (30 bytes), then the first LI 56a would hold a binary value of 30 (000000000011110), as is shown in FIG. 3, indicating that the end 58a of SDU1 57a is 30 octets into the SDU array 58. The first LI 56a has an extension bit 55b that is set, indicating the presence of another LI, a second LI in field 56b. The second LI 56b indicates the ending position 58b of the SDU_57b, and has an extension bit 55c that is cleared, signifying that there are no more LIs, and that the SDU array 58 is thus beginning. If we assume that SDU_257b has a size of 35 octets, then the ending position 58b of SDU_257b is 65 octets (30+35) into the SDU array 58. Hence, the second LI 56b holds a binary value of 65 (000000001000001).
The PDU 50 may be loosely broken into three regions: a sequence number region 54 that holds the sequence number field 52, and the bits 51, 5354a and 55a; a length indicator array 59 that holds the LIs 56a and 56b, and an SDU array 58 that is used to hold SDU data blocks 57a, 57b and 57c. Each SDU data block 57a, 57b and 57c holds data for respective layer 2 SDUs. Depending on the size of the layer 2 SDUs, certain special cases may arise when packing the SDUs into the PDUs 50. These special cases are signaled by the use of special-valued LIs in the length indicator array 59, and are partly considered in the table below:
To understand the entries in Table 1 above, two example situations are considered below. In the following, PDUs are assumed to have a total size of 130 octets. An octet is eight bits. The sequence number region 54 thus has a total size of two octets, leaving a maximum size of 128 octets for the SDU array 58.
Situation 1
Please refer to FIG. 4. FIG. 4 is a block diagram illustrating a first packing condition of SDUs into PDUs. A first SDU, SDU_4, has a size of 128 octets. It is to be followed by a second SDU, SDU_5 with a size of 123 octets, followed by a third SDU, SDU_6 of 100 octets. To perform this packing operation, three SDUs, 60, 70 and 80, are used. The first SDU 60 holds a sequence number 61a of zero in the sequence number region 61. The extension bit 61b is cleared, indicating that there is no length indicator array, and that the SDU array 63 begins immediately and is completely filled with data from a single SDU, the SDUxe2x80x944 63a. The data from SDUxe2x80x944 63a exactly fills the SDU array 63. It is thus not possible to have any LI to mark the terminating end of SDU_463a, as such an LI would require two octets, which would push the terminating end of SDU_463a into the second PDU 70. The end of SDU_463a is therefore indicated by a special LI in the second SDU 70. The second SDU 70 has a sequence number 71a of one, indicating that the second PDU 70 is immediately sequentially after the first PDU 60. The extension bit 71b is set, indicating the presence of a length indicator array 72. The first LI 72a in the length indicator array 72 is all zeros. This is a special LI, and indicates that the previous PDU 60 was exactly filled by the SDU_463a. The next LI 72b indicates that the end of SDU_573a is found 123 octets into the SDU array 73. SDU_573a does not completely fill the second PDU 70, leaving a single octet of space available. This single octet of free space is used to pack the first portion 73b of SDU_6. SDU_6 thus spans from the second PDU 70 to the third PDU 80. There is no LI for SDU_6 in the second PDU 70 as the data for SDU_6 does not terminate within the second PDU 70. The final LI 72b in the length indicator array 72 thus does not mark the end of the final SDU data block 73b, but instead marks the end of the second-to-last SDU data block 73a. The LI for SDU_6 is found in the third PDU 80. The third PDU 80 has a sequence number 81a of two in the sequence number region 81, indicating that the third PDU 80 follows the second PDU 70, and has the extension bit 81b set to indicate that a length indicator array 82 is present. The first entry 82a in the length indicator array 82 marks the terminating end of SDU_6, which is 99 octets into the SDU array 83. Note that SDU_6 is 100 octets in length, but the first octet is held in the second PDU 70, and thus the LI 82a holds a value of 99. The second LI 82b in the length indicator array 82 is a series of ones. This is a special LI, and indicates that all data after the SDU array 83 is simply a padding area PAD_184. The padding area PAD_184 is 25 octets in length. The PAD_1 area 84 holds no layer 2 SDU data, and is simply required to fill out the PDU 80 to a length of 130 octets in size. In certain embodiments, the PAD_l area 84 may be used to hold layer 2 PDU signaling data, if sufficient in size, but the PAD_1 area 84 never holds any layer 2 SDU data. The final LI 82b in the length indicator array 82 does not indicate the ending position of the final SDU data block 83a in the SDU array 83. Instead, the final LI 82b signals that the previous LI 82a marks the end of the SDU array 83, and hence the beginning of the padding area PAD_184.
Situation 2
Please refer to FIG. 5 with reference to FIG. 4. FIG. 5 is a block diagram illustrating a second packing condition of SDUs into PDUs. A first SDU, SDU_7, has a size of 127 octets. SDU_7 is to be followed by a second SDU, SDU_8 with a size of 123 octets, followed by a third SDU, SDU_9 of 100 octets. To perform this packing operation, three SDUs, 90, 100 and 110, are used. This scenario is almost identical to that depicted and explained in FIG. 4, except that the first SDU, SDU_7, is one octet short of exactly filling the SDU array 93 of the first PDU 90. As it is again not possible to place an LI marking the end of SDU_793a into PDU 90, a special LI 102a is used as the first LI in a length array 102 of the second PDU 100. The special LI 102a indicates that SDU_7a is one octet short of filling the SDU array 93. The last octet PAD_294 in the PDU 90 is thus discarded. The rest of PDU 100, and all of PDU 110, are as described for the PDUs 70 and 80, respectively.
Within the PDUs 60 and 90 themselves, no LIs are available to mark the ending position of the SDU data blocks SDU_463a and SDU_793a, respectively. Consequently, the special LIs 72a and 102a are used in the subsequent PDUs 70 and 100 to indicate the respective ending positions of SDU_463a and SDU_793a. However, the SDU data blocks SDU_573a and SDU_8103a are marked within their respective PDUs 70 and 100 by the LIs 72b and 102b. It is thus possible to immediately follow the SDU data blocks SDU_573a and SDU_8103a with succeeding SDU data of SDU_673b and SDU_9103b. Although this is beneficial from a packing standpoint, it is not always beneficial from a transmitting standpoint. Consider, for example, the situation in which data from SDU_8103a is ready to be transmitted, but the data from SDU_9103b is not yet ready. An additional LI marking the rest of the PDU 100 after SDU_8103a as padding (i.e., a length indicator of 111111111111111) is not possible as such an LI requires two octets of space, and only a single octet is available in region 103b. The layer 3 data in SDU_8103a thus must wait until the data for SDU_9103b becomes available, as PDU 100 cannot be sent out until it reaches its full compliment of 130 octets. Such a delay will adversely affect the overall transmission characteristics of the transmission protocol.
It is therefore a primary objective of this invention to provide a PDU data structure that resolves the above-mentioned problem.
Briefly summarized, the preferred embodiment of the present invention discloses a data structure for a first layer 2 protocol data unit (PDU) to carry layer 2 service data unit (SDU) data in a wireless communications system. The data structure has a sequence number region that holds a sequence number for indicating a sequential ordering of the first PDU in a stream of PDUs. A length indicator array follows the sequence number field, and has at least a final length indicator. The final length indicator is the last length indicator in the length indicator array and is n bits in length. An SDU array follows the length indicator array. The SDU array has at least a final SDU data block. The final SDU block is the last SDU in the SDU array. The final length indicator indicates a position of the end of the final SDU block within the first PDU. Finally, a padding area is after the final SDU block. The padding area fills the remainder of the first PDU. The padding area is less than n bits in length and carries no layer 2 SDU data.
It is an advantage of the present invention that the existence of the padding area prevents SDU data the necessity of waiting on subsequent SDU data to effect packing. SDU data may thus be transmitted as it is requested by the upper layer, improving the overall transmission efficiency of the communication protocol.
These and other objectives of the present invention will no doubt become obvious to those of ordinary skill in the art after reading the following detailed description of the preferred embodiment, which is illustrated in the various figures and drawings.